﻿//void SeqListInit(SeqList* ps)
//{
//	ps->a = (SLDateType*)malloc(sizeof(SLDateType) * 2);
//	if (!ps->a)
//	{
//		perror("malloc");
//		exit(-1);
//	}
//	memset(ps->a, 0, sizeof(SLDateType) * 2);
//	ps->size = 0;
//	ps->capacity = 2;
//}
//void SeqListDestroy(SeqList* ps)
//{
//	free(ps->a);
//	ps->a = 0;
//	ps->size = 0;
//	ps->capacity = 0;
//}
//void SeqListPrint(SeqList* ps)
//{
//	int i = 0;
//	for (i = 0; i < ps->size; i++)
//	{
//		fprintf(stdout, "%d ", ps->a[i]);
//	}
//	puts("");
//}
//void SeqListPushBack(SeqList* ps, SLDateType x)
//{
//	if (ps->size == ps->capacity)
//	{
//		SLDateType* p;
//		p = (SLDateType*)realloc(ps->a, (sizeof(SLDateType) * (ps->capacity * 2)));
//		ps->a = p;
//		if (!ps->a)
//		{
//			perror("realloc");
//			exit(-1);
//		}
//		ps->capacity *= 2;
//	}
//	ps->a[ps->size++] = x;
//}
//void SeqListPushFront(SeqList* ps, SLDateType x)
//{
//	if (ps->size == ps->capacity)
//	{
//		SLDateType* p;
//		p = (SLDateType*)realloc(ps->a, (sizeof(SLDateType) * (ps->capacity * 2)));
//		ps->a = p;
//		if (!ps->a)
//		{
//			perror("realloc");
//			exit(-1);
//		}
//		ps->capacity *= 2;
//	}
//	if (ps->size == 0)
//	{
//		ps->a[ps->size++] = x;
//		return;
//	}
//	int m = ps->a[0];
//	for (int i = 0; i < ps->size - 1; i++)
//	{
//		int t = ps->a[i + 1];
//		ps->a[i + 1] = m;
//		m = t;
//	}
//	ps->a[ps->size++] = m;
//	ps->a[0] = x;
//}
//void SeqListPopFront(SeqList* ps)
//{
//	if (ps->size == 0)
//		return;
//	for (int i = 0; i < ps->size - 1; i++)
//	{
//		ps->a[i] = ps->a[i + 1];
//	}
//	ps->size--;
//}
//void SeqListPopBack(SeqList* ps)
//{
//	if (ps->size == 0)
//		return;
//	ps->size--;
//}
//int SeqListFind(SeqList* ps, SLDateType x)
//{
//	for (int i = 0; i < ps->size; i++)
//		if (ps->a[i] == x)
//			return i + 1;
//	return -1;
//}
//void SeqListInsert(SeqList* ps, int pos, SLDateType x)
//{
//	if (ps->size == ps->capacity)
//	{
//		SLDateType* p;
//		p = (SLDateType*)realloc(ps->a, (sizeof(SLDateType) * (ps->capacity * 2)));
//		ps->a = p;
//		if (!ps->a)
//		{
//			perror("realloc");
//			exit(-1);
//		}
//		ps->capacity *= 2;
//	}
//	SLDateType m = ps->a[pos - 1];
//	for (int i = pos - 1; i < ps->size - 1; i++)
//	{
//		SLDateType t = ps->a[i + 1];
//		ps->a[i + 1] = m;
//		m = t;
//	}
//	ps->a[ps->size++] = m;
//	ps->a[pos - 1] = x;
//}
//void SeqListErase(SeqList* ps, int pos)
//{
//	for (int i = pos - 1; i < ps->size; i++)
//	{
//		ps->a[i] = ps->a[i + 1];
//	}
//	ps->size--;
//}
//int main()
//{
//	SeqList ps;
//	int x = 0;
//	SeqListInit(&ps);//初始化
//	x++;
//	SeqListPushBack(&ps, x);//尾插
//	x++;
//	SeqListPushFront(&ps, x);//头插
//	x++;
//	SeqListPushBack(&ps, x);//尾插
//	x++;
//	SeqListPushFront(&ps, x);//头插
//	x++;
//	SeqListPushBack(&ps, x);//尾插
//	x++;
//	SeqListPushFront(&ps, x);//头插
//	SeqListPopFront(&ps);//头删
//	SeqListPopBack(&ps);//尾删
//	x = 1;
//	int t = SeqListFind(&ps, x);// 顺序表查找
//	if (t != -1)
//		fprintf(stdout, "此元素在顺序表的第%d个位置\n", t);
//	else
//		fprintf(stdout, "没有此元素\n");
//	int pos = 3;
//	x++;
//	SeqListInsert(&ps, pos, 5);//顺序表在pos位置插入x
//	SeqListErase(&ps, pos);//顺序表删除pos位置的值
//	SeqListPrint(&ps);//输出
//	SeqListDestroy(&ps);//销毁
//	return 0;
//}

//从左到右右移旋转数组的方法
//void SLPushFront(SL* ps, SLDataType x)
//{
//	SLCheckCapacity(ps);
//	// 挪动数据
//	int end = ps->size - 1;
//	while (end >= 0)
//	{
//		ps->a[end + 1] = ps->a[end];
//		--end;
//	}
//	ps->a[0] = x;
//	ps->size++;
//}

//#include<stdio.h>
//int removeDuplicates(int* nums, int numsSize) {
//    int i = 0, j = 0, count = 0, n = 0;
//    while (i < numsSize)
//    {
//        for (j = i + 1; j < numsSize; j++)
//        {
//            if (nums[i] != nums[j])
//                count++;
//            if (count != numsSize - i - 1 && j == numsSize - 1)
//            {
//                i++;
//                j = i;
//                count = 0;
//            }
//        }
//        nums[n] = nums[i];
//        n++;
//        count = 0;
//        i++;
//    }
//    return n;
//}
//int main()
//{
//    int nums[10] = { 0,0,1,1,1,2,2,3,3,4 };
//    int t = removeDuplicates(nums, 10);
//    for (int i = 0; i < t; i++)
//        fprintf(stdout, "%d ", nums[i]);
//    fprintf(stdout, "\n%d\n", t);
//    return 0;
//}

//void merge(int* nums1, int m, int* nums2, int n)
//{
//    int* nums3, i = 0, j = 0, k = 0;
//    nums3 = (int*)malloc(sizeof(int) * (m + n));
//    while (i < m + n)
//    {
//        if (j == m)
//        {
//            while (k <= n)
//                nums3[i++] = nums2[k++];
//        }
//        if (nums1[j] > nums2[k])
//            nums3[i++] = nums2[k++];
//        else
//            nums3[i++] = nums1[j++];
//    }
//    for (i = 0; i < m + n; i++)
//    {
//        nums1[i] = nums3[i];
//    }
//	  free(nums);
//}

//void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
//    int i = 0, j = 0, k = 0;
//    i = m - 1;
//    j = n - 1;
//    for (k = m + n - 1; k >= 0; k--)
//    {
//        if (nums1[i] > nums2[j])
//        {
//            nums1[k] = nums1[i];
//            i--;
//        }
//        else if (nums1[i] <= nums2[j])
//        {
//            nums1[k] = nums2[j];
//            j--;
//        }
//        else if (i == -1)
//        {
//            while (j != -1)
//            {
//                nums1[k--] = nums2[j--];
//            }
//        }
//        else if (j == -1)
//        {
//            while (i != -1)
//            {
//                nums1[k--] = nums1[i--];
//            }
//        }
//    }
//}